Micron Document
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| SparkN0de-git | SparkN0de |
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


Displaying Rendered • View rawDownload


vendor/rns_over_http/README-RU.md b960db2e8bf87b96c14f6421402a16798d7a9ded (b960db2e) Text, 6.71 KB

RNS-over-HTTP

Интерфейс Reticulum, который туннелирует трафик через стандартные HTTP/S POST-запросы. Это позволяет Reticulum работать в сетях, где разрешён только веб-трафик, эффективно обходя файрволы, DPI и другие ограничения.

Границы пакетов на HTTP-теле используют то же упрощённое HDLC-фреймирование, что и T383838PipeInterface Reticulum, поэтому несколько пакетов могут передаваться в одном теле запроса или ответа без слияния.

Не-GitHub-зеркало. Кроме того, файлы проекта доступны в сети Reticulum по адресу T383838RNS-over-HTTP.

Обзор

RNS-over-HTTP создаёт двунаправленный транспортный уровень, используя простую клиент-серверную модель:

Сервер: Запускается на машине с публичным IP-адресом и прослушивает HTTP-запросы.
Клиент: Может находиться за файрволом или NAT, ему требуется только исходящий доступ в интернет.

Клиент опрашивает сервер с помощью HTTP POST-запросов, отправляя исходящие данные в теле запроса и получая входящие данные в теле ответа. Это делает трафик похожим на обычную веб-активность.

Как это работает

Интерфейс имитирует постоянное соединение, используя механизм, подобный long-polling:

1. Клиент отправляет HTTP POST на сервер с ожидающими HDLC-фреймами в теле запроса.
2. Сервер декодирует входящие пакеты для Reticulum и сразу возвращает исходящую очередь (тоже в HDLC) в теле ответа.
3. Клиент принимает ответ, декодирует фреймы и передаёт пакеты в Reticulum.
4. После настраиваемого интервала опроса клиент повторяет цикл.

Особенности

Обход файрволов и DPI: Туннелирует трафик через стандартные порты HTTP/S (80/443).
Двунаправленная связь: Полнодуплексная передача данных.
Совместимое с Pipe фреймирование: HDLC FLAG/ESC как у T383838PipeInterface.
Простая настройка: Python, T383838httpx, Hypercorn/aioquic для HTTP/2–3 и Reticulum (T383838rns).
Надёжность: Повторное подключение с экспоненциальной задержкой.
Гибкость: Настраиваемые MTU и интервал опроса.
Совместимость с прокси: Caddy, Nginx и аналоги.
Повторное использование соединений: keep-alive / мультиплексирование.
HTTP/1.1, HTTP/2 и HTTP/3: T383838http_version = 1|2|3 (по умолчанию T3838381).

Начало работы

Требования

• Python 3.10 или новее
Poetry

Установка

1. Установите зависимости через Poetry (из корня репозитория):

T282828
poetry install

2. Установите пользовательский интерфейс: скопируйте T383838HTTPInterface.py в каталог интерфейсов Reticulum, например T383838~/.reticulum/interfaces/.

Тесты

T282828
poetry run pytest -m Ta5d6ff"not live"
poetry run pytest -m live


Конфигурация

Добавьте блок интерфейса в T383838~/.reticulum/config на сервере и на клиенте. Поле T383838type должно совпадать с именем модуля (T383838HTTPInterface).

Конфигурация сервера

T282828
Tff7b72[[HTTP Server Interface]]
Te6edf3type Tff7b72= Ta5d6ffHTTPInterface
Te6edf3enabled Tff7b72= Ta5d6fftrue
Te6edf3mode Tff7b72= Ta5d6ffserver
Te6edf3listen_host Tff7b72= Ta5d6ff0.0.0.0
Te6edf3listen_port Tff7b72= Ta5d6ff8080
Te6edf3mtu Tff7b72= Ta5d6ff4096
Te6edf3check_user_agent Tff7b72= Ta5d6fftrue
Te6edf3user_agent Tff7b72= Ta5d6ffRNS-HTTP-Tunnel/1.0


Конфигурация клиента

T282828
Tff7b72[[HTTP Client Interface]]
Te6edf3type Tff7b72= Ta5d6ffHTTPInterface
Te6edf3enabled Tff7b72= Ta5d6fftrue
Te6edf3mode Tff7b72= Ta5d6ffclient
Te6edf3server_url Tff7b72= Ta5d6ffhttp://your-server-ip-or-domain:8080/
Te6edf3poll_interval Tff7b72= Ta5d6ff0.1
Te6edf3mtu Tff7b72= Ta5d6ff4096
Te6edf3user_agent Tff7b72= Ta5d6ffRNS-HTTP-Tunnel/1.0


Параметры конфигурации

Общие

• T383838mtu: максимальный размер пакета в байтах (по умолчанию T3838384096)
• T383838user_agent: строка User-Agent (по умолчанию T383838RNS-HTTP-Tunnel/1.0)

Режим сервера

• T383838mode = server
• T383838listen_host (по умолчанию T3838380.0.0.0)
• T383838listen_port (по умолчанию T3838388080)
• T383838check_user_agent (по умолчанию T383838true)
• T383838serve_html_page / T383838html_file_path: необязательная HTML-страница на GET T383838/

Режим клиента

• T383838mode = client
• T383838server_url (обязателен)
• T383838poll_interval (по умолчанию T3838380.1)
• T383838http_version = 1|2|3 (по умолчанию T3838381)
• для T3838382 и T3838383: T383838https://, на сервере T383838tls_certfile / T383838tls_keyfile
• T383838tls_verify / T383838tls_ca_certs на клиенте
• T383838pool_connections / T383838pool_maxsize / T383838keepalive_timeout

Обратный прокси (пример Caddy)

T282828
example.yourdomain.com {
reverse_proxy 127.0.0.1:8080
header {
-Server
X-Content-Type-Options nosniff
}
}

Безопасность

• Используйте HTTPS там, где возможно.
• По умолчанию сервер проверяет User-Agent. Задайте одинаковый T383838user_agent на обеих сторонах или отключите проверку через T383838check_user_agent = false.

Лицензия

Проект распространяется под лицензией MIT.


──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────